//package cn.analysys.util;
//
//import cn.analysys.job.HelloQuartzJob;
//import org.quartz.*;
//import org.quartz.impl.StdSchedulerFactory;
//
//import java.util.Date;
//
///**
// * 任务调度公共类
// */
//public class QuartzUtil {
//
//    private final static String JOB_SIMPLE_GROUP_NAME = "QUARTZ_SIMPLE_JOB_NAME";// 简单任务组
//    private final static String TRIGGER_SIMPLE_GROUP_NAME = "QUARTZ_SIMPLE_TRIGGER_GROUP_NAME";// 简单触发器组
//    private final static String JOB_CRON_GROUP_NAME = "QUARTZ_CRON_JOB_NAME";// 定时任务组
//    private final static String TRIGGER_CRON_GROUP_NAME = "QUARTZ_CRON_TRIGGER_GROUP_NAME";// 定时触发器组
//
//
//    /**
//     * 添加简单任务的方法
//     *
//     * @param jobName
//     *            任务名
//     * @param triggerName
//     *            触发器名
//     * @param jobClass
//     *            执行任务的类
//     * @param seconds
//     *            间隔时间 单位：秒
//     * @throws SchedulerException
//     */
//    public static void addSimpleJob(String jobName, String triggerName, Class<? extends Job> jobClass, int seconds)
//            throws SchedulerException {
//
//        // 创建一个SchedulerFactory工厂实例
//        SchedulerFactory sf = new StdSchedulerFactory();
//
//        // 通过SchedulerFactory构建Scheduler对象
//        Scheduler sched = sf.getScheduler();
//
//        // 用于描叙Job实现类及其他的一些静态信息，构建一个作业实例
//        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, JOB_SIMPLE_GROUP_NAME).build();
//
//        // 构建一个触发器，规定触发的规则
//        Trigger trigger = TriggerBuilder.newTrigger()// 创建一个新的TriggerBuilder来规范一个触发器
//                .withIdentity(triggerName, TRIGGER_SIMPLE_GROUP_NAME)// 给触发器起一个名字和组名
//                .startNow()// 立即执行
//                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(seconds)// 时间间隔
//                                                                                                   // 单位：秒
//                        .repeatForever()// 一直执行
//                ).build();// 产生触发器
//
//        // 向Scheduler中添加job任务和trigger触发器
//        sched.scheduleJob(jobDetail, trigger);
//
//        // 启动
//        sched.start();
//    }
//
//    /**
//     * 添加定时任务的方法
//     *
//     * @param jobName
//     *            任务名
//     * @param triggerName
//     *            触发器名
//     * @param jobClass
//     *            执行任务的类
//     * @param cronSchedule
//     *            定时任务时间表达式
//     * @throws SchedulerException
//     */
//    public static void addCronJob(String jobName, String triggerName, Class<? extends Job> jobClass, String cronSchedule)
//            throws SchedulerException {
//        // 创建一个SchedulerFactory工厂实例
//        SchedulerFactory sf = new StdSchedulerFactory();
//        // 通过SchedulerFactory构建Scheduler对象
//        Scheduler sched = sf.getScheduler();
//
//        // 用于描叙Job实现类及其他的一些静态信息，构建一个作业实例
//        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, JOB_CRON_GROUP_NAME).build();
//
//        // 构建一个触发器，规定触发的规则
//        Trigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity(triggerName, TRIGGER_CRON_GROUP_NAME)
//                .withSchedule(CronScheduleBuilder.cronSchedule(cronSchedule)).build();
//
//        // 向Scheduler中添加job任务和trigger触发器
//        sched.scheduleJob(jobDetail, trigger);
//        // 启动
//        sched.start();
//    }
//
//    /**
//     * 添加定时任务的方法,设置开始时间，结束时间 添加定时任务的方法
//     *
//     * @param jobName
//     *            任务名
//     * @param triggerName
//     *            触发器名
//     * @param jobClass
//     *            执行任务的类
//     * @param cronSchedule
//     *            定时任务时间表达式
//     * @param startDate
//     *            任务开始时间
//     * @param endDate
//     *            任务结束时间
//     * @throws SchedulerException
//     */
//    public static void addCronJob(String jobName, String triggerName, Class<? extends Job> jobClass, String cronSchedule,
//            Date startDate, Date endDate) throws SchedulerException {
//        // 创建一个SchedulerFactory工厂实例
//        SchedulerFactory sf = new StdSchedulerFactory();
//        // 通过SchedulerFactory构建Scheduler对象
//        Scheduler sched = sf.getScheduler();
//
//        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, JOB_CRON_GROUP_NAME).build();
//
//        Trigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity(triggerName, TRIGGER_CRON_GROUP_NAME)
//                .startAt(startDate).endAt(endDate)
//                .withSchedule(CronScheduleBuilder.cronSchedule(cronSchedule)
//                .withMisfireHandlingInstructionDoNothing()// 第一次不执行计划
//                ).build();
//
//        sched.scheduleJob(jobDetail, trigger);
//        sched.start();
//    }
//
//    /**
//     * 测试
//     *
//     * @param args
//     */
//    public static void main(String[] args) {
//        try {
//            // 每隔5秒启动一次，通过简单任务方式
//            QuartzUtil.addSimpleJob("job1", "trigger1", HelloQuartzJob.class, 5);
//            // 每隔5秒启动一次，通过定时任务方式
//            QuartzUtil.addCronJob("job1", "trigger1", HelloQuartzJob.class, "0/5 * * * * ?");
//        } catch (SchedulerException e) {
//            e.printStackTrace();
//        }
//    }
//}